// my/pages/BuyEd/BuyEd.js
const {
    http
} = require('../../../utils/http.js');
const {
    getUserId
} = require('../../../utils/userManager.js');

Page({
    data: {
        tabs: [],
        currentTabId: null,
        userId: null,
        isLoggedIn: false,
        questionBanks: [], // 全部题库列表
        courses: [] // 当前tab下的题库
    },

    onLoad() {
        this.checkLoginStatus();
    },

    checkLoginStatus() {
        const userId = getUserId();
        if (userId) {
            this.setData({
                userId: userId,
                isLoggedIn: true
            });
            this.loadTabs();
        } else {
            wx.showToast({
                title: '请先登录',
                icon: 'none',
                duration: 2000
            });
            setTimeout(() => {
                wx.navigateBack();
            }, 2000);
        }
    },

    /**
     * 加载学科tab数据
     */
    loadTabs() {
        // 调用后端接口获取学科数据
        http.get('/ssh/subject/allNameAndId')
            .then(res => {
                console.log('获取学科数据成功:', res);
                if (res && res.code === 200 && Array.isArray(res.data)) {
                    // 处理不同的API返回格式
                    let subjectData = [];

                    if (res && res.rows && Array.isArray(res.rows)) {
                        // 新API格式：{rows: [...]}
                        subjectData = res.rows;
                    } else if (res && res.data && Array.isArray(res.data)) {
                        // 旧API格式：{data: [...]}
                        subjectData = res.data;
                    } else if (res && Array.isArray(res)) {
                        // 直接返回数组
                        subjectData = res;
                    }
                    if (subjectData.length > 0) {
                        // 成功获取数据
                        const tabs = subjectData.map(item => ({
                            id: item.id,
                            name: item.name || item.subjectName
                        }));

                        this.setData({
                            tabs: tabs,
                            currentTabId: tabs[0].id
                        });
                        // 加载完学科数据后，立即加载题库列表
                        this.loadQuestionBanks();
                    } else {
                        // 没有学科数据
                        wx.showToast({
                            title: '暂无学科数据',
                            icon: 'none'
                        });
                    }
                }
            })
            .catch(err => {
                let errorMessage = '获取学科数据失败';
                wx.showToast({
                    title: errorMessage,
                    icon: 'none',
                    duration: 2000
                });
            });
    },

    /**
     * 点击tab时输出其id
     */
    onTabTap(e) {
        const id = e.currentTarget.dataset.id;
        //console.log('点击的tab id:', id, typeof id);
        if (id === this.data.currentTabId) return;

        // 从全部题库中筛选当前tab下的题库
        const courses = this.data.questionBanks.filter(item => item.subjectId == id);
        console.log('切换到tab', id, '，筛选出的题库:', courses);

        this.setData({
            currentTabId: id,
            courses
        });
    },

    /**
     * 获取题库列表
     */
    loadQuestionBanks() {
        if (!this.data.userId) {
            console.warn('用户ID为空，无法获取题库列表');
            return;
        }

        // 构建请求参数
        const params = {
            userId: this.data.userId,
            del: 1 // 只查询未删除的题库
        };

        http.get('/fk/question_bank/list', params)
            .then(res => {
                console.log('获取题库列表成功:', res);

                // 处理不同的API返回格式
                let questionBanks = [];

                if (res && res.rows && Array.isArray(res.rows)) {
                    // 新API格式：{rows: [...]}
                    questionBanks = res.rows;
                } else if (res && Array.isArray(res)) {
                    // 旧API格式：直接返回数组
                    questionBanks = res;
                } else if (res && res.data && Array.isArray(res.data)) {
                    // 其他可能的格式：{data: [...]}
                    questionBanks = res.data;
                }

                if (questionBanks.length > 0) {
                    // 按当前tab筛选
                    const courses = questionBanks.filter(item => item.subjectId == this.data.currentTabId);

                    this.setData({
                        questionBanks,
                        courses
                    });
                    console.log('全部题库数据:', questionBanks);
                } else {
                    this.setData({
                        questionBanks: [],
                        courses: []
                    });
                    wx.showToast({
                        title: '暂无题库数据',
                        icon: 'none'
                    });
                }
            })
            .catch(err => {
                console.error('获取题库列表失败:', err);
                this.setData({
                    questionBanks: [],
                    courses: []
                });
                wx.showToast({
                    title: '获取题库列表失败',
                    icon: 'none',
                    duration: 2000
                });
            });
    },

    /**
     * 点击题库项跳转到章节练习页面
     */
    onItemTap(e) {
        const id = e.currentTarget.dataset.id;
        console.log('点击题库项，ID:', id);

        if (!id) {
            wx.showToast({
                title: '题库ID无效',
                icon: 'none'
            });
            return;
        }
        // 从题库列表中查找当前点击的题库项，获取subjectId
        const currentItem = this.data.questionBanks.find(item => item.id == id);
        const subjectId = currentItem ? currentItem.subjectId : null;
        if (!subjectId) {
            wx.showToast({
                title: '题库科目信息无效',
                icon: 'none'
            });
            return;
        }
        console.log('跳转参数 - 题库ID:', id, '科目ID:', subjectId);
        // 跳转到章节练习页面，传递题库ID和科目ID
        wx.navigateTo({
            url: `/index/pages/chapterPractice/chapterPractice?id=${id}${subjectId ? `&subjectId=${subjectId}` : ''}`,
            success: () => {
                console.log('跳转到章节练习页面成功');
            },
            fail: (err) => {
                console.error('跳转失败:', err);
                wx.showToast({
                    title: '页面跳转失败',
                    icon: 'none'
                });
            }
        });
    }
});